package com.insigma.business.qrcode.placement.service;

import com.insigma.business.qrcode.common.vo.BaseResponse;
import com.insigma.business.qrcode.placement.dto.*;
import com.insigma.business.qrcode.placement.dto.excel.ExportDistrDetlRequestDTO;
import com.insigma.business.qrcode.placement.dto.request.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author max
 * @Description:
 * @date 2024-04-16 14:11
 */
public interface CodeOnPlacementService {
    /**
     * 新增安置公示
     * @param requestDTO
     * @return
     */
    BaseResponse<String> addPlacementPubInfo(PlacementPubInfoAddUpdRequestDTO requestDTO);

    /**
     * 修改安置公示
     * @param requestDTO
     * @return
     */
    BaseResponse<String> updatePlacementPubInfo(PlacementPubInfoAddUpdRequestDTO requestDTO);

    /**
     * 删除安置公示
     * @param requestDTO
     * @return
     */
    BaseResponse<String> delPlacementPubInfo(PlacementPubInfoAddUpdRequestDTO requestDTO);

    /**
     * 查询安置公示列表
     * @param requestDTO
     * @return
     */
    BaseResponse<List<PlacementPubInfoDTO>> queryPlacementPubInfoList(PlacementPubInfoQueryRequestDTO requestDTO);

    /**
     * 查询安置公示明细
     * @param requestDTO
     * @return
     */
    BaseResponse<PlacementPubInfoDTO> queryPlacementPubInfo(PlacementPubInfoQueryRequestDTO requestDTO);

    /**
     * 下载模板
     * @param response
     */
    void downloadResetTemplate(HttpServletResponse response) throws Exception;

    /**
     * 导入待安置生活补助信息
     * @param file
     * @return
     */
    BaseResponse<ImportResDTO> importResetSubsidyDistr(MultipartFile file) throws Exception;

    /**
     * 查询待安置生活补助信息列表
     * @param requestDTO
     * @return
     * @throws Exception
     */
    BaseResponse<List<ResetSubsidyDistrDetlDTO>> queryResetSubsidyDistrDetlList(ResetSubsidyDistrDetlQueryRequestDTO requestDTO) throws Exception;

    /**
     * 查询待安置生活补助信息明细
     * @param requestDTO
     * @return
     */
    BaseResponse<ResetSubsidyDistrDetlDTO> queryResetSubsidyDistrDetl(ResetSubsidyDistrDetlQueryRequestDTO requestDTO) throws Exception;

    /**
     * 修改待安置生活补助信息
     * @param requestDTO
     * @return
     * @throws Exception
     */
    BaseResponse<String> updateResetSubsidyDistrDetl(ResetSubsidyDistrDetlUpdRequestDTO requestDTO) throws Exception;

    /**
     * 删除待安置生活补助信息
     * @param requestDTO
     * @return
     * @throws Exception
     */
    BaseResponse<String> delResetSubsidyDistrDetl(ResetSubsidyDistrDetlUpdRequestDTO requestDTO) throws Exception;

    /**
     * 确认待安置生活补助信息
     * @param requestDTO
     * @return
     */
    BaseResponse<String> confirmResetSubsidyDistrDetl(ResetSubsidyDistrDetlUpdRequestDTO requestDTO) throws Exception;

    /**
     * 下载灵活就业/自主就业一次性补助导入模板
     * @param response
     */
    void downloadFlexSelfTemplate(HttpServletResponse response) throws Exception;

    /**
     * 导入灵活就业/自主就业一次性补助信息
     * @param file
     * @return
     */
    BaseResponse<ImportResDTO> importFlexSelfSubsidyDistr(MultipartFile file, String subsidyType) throws Exception;

    /**
     * 查询灵活就业/自主就业一次性补助列表
     * @param requestDTO
     * @return
     */
    BaseResponse<List<FlexSelfSubsidyDistrDetlDTO>> queryFlexSelfSubsidyDistrDetlList(FlexSelfSubsidyDistrDetlQueryRequestDTO requestDTO) throws Exception;

    /**
     * 查询灵活就业/自主就业一次性补助明细
     * @param requestDTO
     * @return
     */
    BaseResponse<FlexSelfSubsidyDistrDetlDTO> queryFlexSelfSubsidyDistrDetl(FlexSelfSubsidyDistrDetlQueryRequestDTO requestDTO) throws Exception;

    /**
     * 修改灵活就业/自主就业一次性补助信息
     * @param requestDTO
     * @return
     */
    BaseResponse<String> updateFlexSelfSubsidyDistrDetl(FlexSelfSubsidyDistrDetlUpdRequestDTO requestDTO) throws Exception;

    /**
     * 删除灵活就业/自主就业一次性补助信息
     * @param requestDTO
     * @return
     */
    BaseResponse<String> delFlexSelfSubsidyDistrDetl(FlexSelfSubsidyDistrDetlUpdRequestDTO requestDTO) throws Exception;

    /**
     * 确认灵活就业/自主就业一次性补助信息
     * @param requestDTO
     * @return
     */
    BaseResponse<String> confirmFlexSelfSubsidyDistrDetl(FlexSelfSubsidyDistrDetlUpdRequestDTO requestDTO) throws Exception;

    /**
     * 导出补助明细列表
     * @param requestDTO
     * @param response
     * @throws Exception
     */
    void exportDistrDetlList(ExportDistrDetlRequestDTO requestDTO, HttpServletResponse response) throws Exception;

    /**
     * 小程序端-资金发放确认-个人银行信息查询
     * @param requestDTO
     * @return
     * @throws Exception
     */
    BaseResponse<PsnBankInfoDTO> queryPsnBankInfo(ResetSubsidyDistrDetlQueryRequestDTO requestDTO) throws Exception;

    /**
     * 小程序端-资金发放确认-待安置信息查询
     * @param requestDTO
     * @return
     * @throws Exception
     */
    BaseResponse<ResetSubsidyDistrAppletDTO> queryResetSubsidyDistrApplet(ResetSubsidyDistrDetlQueryRequestDTO requestDTO) throws Exception;
}
